home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / include / linux / atmlec.h < prev    next >
C/C++ Source or Header  |  2009-10-16  |  3KB  |  99 lines

  1. /*
  2.  * ATM Lan Emulation Daemon driver interface
  3.  *
  4.  * Marko Kiiskila <mkiiskila@yahoo.com>
  5.  */
  6.  
  7. #ifndef _ATMLEC_H_
  8. #define _ATMLEC_H_
  9.  
  10. #include <linux/atmapi.h>
  11. #include <linux/atmioc.h>
  12. #include <linux/atm.h>
  13. #include <linux/if_ether.h>
  14. #include <linux/types.h>
  15.  
  16. /* ATM lec daemon control socket */
  17. #define ATMLEC_CTRL    _IO('a', ATMIOC_LANE)
  18. #define ATMLEC_DATA    _IO('a', ATMIOC_LANE+1)
  19. #define ATMLEC_MCAST    _IO('a', ATMIOC_LANE+2)
  20.  
  21. /* Maximum number of LEC interfaces (tweakable) */
  22. #define MAX_LEC_ITF 48
  23.  
  24. /*
  25.  * From the total of MAX_LEC_ITF, last NUM_TR_DEVS are reserved for Token Ring.
  26.  * E.g. if MAX_LEC_ITF = 48 and NUM_TR_DEVS = 8, then lec0-lec39 are for
  27.  * Ethernet ELANs and lec40-lec47 are for Token Ring ELANS.
  28.  */
  29. #define NUM_TR_DEVS 8
  30.  
  31. typedef enum {
  32.     l_set_mac_addr,
  33.     l_del_mac_addr,
  34.     l_svc_setup,
  35.     l_addr_delete,
  36.     l_topology_change,
  37.     l_flush_complete,
  38.     l_arp_update,
  39.     l_narp_req,        /* LANE2 mandates the use of this */
  40.     l_config,
  41.     l_flush_tran_id,
  42.     l_set_lecid,
  43.     l_arp_xmt,
  44.     l_rdesc_arp_xmt,
  45.     l_associate_req,
  46.     l_should_bridge        /* should we bridge this MAC? */
  47. } atmlec_msg_type;
  48.  
  49. #define ATMLEC_MSG_TYPE_MAX l_should_bridge
  50.  
  51. struct atmlec_config_msg {
  52.     unsigned int maximum_unknown_frame_count;
  53.     unsigned int max_unknown_frame_time;
  54.     unsigned short max_retry_count;
  55.     unsigned int aging_time;
  56.     unsigned int forward_delay_time;
  57.     unsigned int arp_response_time;
  58.     unsigned int flush_timeout;
  59.     unsigned int path_switching_delay;
  60.     unsigned int lane_version;    /* LANE2: 1 for LANEv1, 2 for LANEv2 */
  61.     int mtu;
  62.     int is_proxy;
  63. };
  64.  
  65. struct atmlec_msg {
  66.     atmlec_msg_type type;
  67.     int sizeoftlvs;        /* LANE2: if != 0, tlvs follow */
  68.     union {
  69.         struct {
  70.             unsigned char mac_addr[ETH_ALEN];
  71.             unsigned char atm_addr[ATM_ESA_LEN];
  72.             unsigned int flag;    /*
  73.                          * Topology_change flag,
  74.                          * remoteflag, permanent flag,
  75.                          * lecid, transaction id
  76.                          */
  77.             unsigned int targetless_le_arp;    /* LANE2 */
  78.             unsigned int no_source_le_narp;    /* LANE2 */
  79.         } normal;
  80.         struct atmlec_config_msg config;
  81.         struct {
  82.             __u16 lec_id;                /* requestor lec_id  */
  83.             __u32 tran_id;                /* transaction id    */
  84.             unsigned char mac_addr[ETH_ALEN];    /* dst mac addr      */
  85.             unsigned char atm_addr[ATM_ESA_LEN];    /* reqestor ATM addr */
  86.         } proxy;    /*
  87.                  * For mapping LE_ARP requests to responses. Filled by
  88.                  * zeppelin, returned by kernel. Used only when proxying
  89.                  */
  90.     } content;
  91. } __ATM_API_ALIGN;
  92.  
  93. struct atmlec_ioc {
  94.     int dev_num;
  95.     unsigned char atm_addr[ATM_ESA_LEN];
  96.     unsigned char receive;    /* 1= receive vcc, 0 = send vcc */
  97. };
  98. #endif /* _ATMLEC_H_ */
  99.